In recent years, project management software has gained increasing popularity. Close to $2 billion is spent on project management software every year. However, it is still the case that most projects, regardless of industry or type, are delivered late, over budget and under scope. Consider the statistics that show 1) over 83% of information technology (IT) projects are delivered late or over-budget, 2) projects completed by large companies have only 42% of the originally designed features and functions, 3) over 85% of engineering projects in the semiconductor industry finish late, 4) on average, high-tech projects are late by 100% despite the use of project management software and traditional tools, 5) 80% of all embedded systems are delivered late and 6) most defense projects take too long and cost too much.
Currently, a popular approach to project management is the critical path project management methodology. The critical path project management methodology has been utilized in the industry for many years. In brief, the critical path methodology teaches that every project or set of projects has one critical path that must be managed in order to realize established goals. According to the theory, every project has one longest chain of tasks/events, i.e., the critical path, which should be managed in order to maintain time and budget goals. This approach, however, does not allow for the possibility that the critical path keeps changing due to uncertainties. These uncertainties affect projects adversely and are typically the reason for time and budget overruns for large projects.
In theory, if you create a good plan and follow it, your projects will be completed on time. In reality, too many uncertainties arise along the way: requirements change, technology fails, vendors do not deliver, work materializes slower than expected, approvals are not granted on time and priorities change. As uncertainties strike, plans go awry.
Uncertainties can affect projects adversely in several ways. The cascade effect propagates delays but does not allow for the realization of gains. Projects lose time because either all of the preceding activities have not finished, or the needed resources are working elsewhere. Substantial time and capacity are lost as a result. Additionally, resources go idle waiting for work to arrive. Such idling is often not visible because people can continue to fine-tune already completed work in the meantime.
Another way in which uncertainties can affect projects adversely is multitasking, whereby people shuttle between tasks, killing productivity and stretching projects. As schedules start slipping, people are needed on multiple projects at once. As people shuttle between tasks without finishing one at a time (multitasking), this results in duration stretch, whereby each task takes longer, switching costs, whereby extra capacity is needed for task set-up and set-down, and concentration lapse, whereby quality suffers when people cannot concentrate on one task at a time.
Yet another way in which uncertainties can affect projects adversely is human behavior, whereby safeties are hidden in commitments. Having experienced constant delays, workers quickly learn to hide safeties in their estimates. However, these safeties are invariably wasted because of procrastination. With safeties embedded in commitments, it only becomes more tempting to take a slow start. Safeties are also wasted because of a lack of reporting early finishes. People do not report early finishes because they are afraid that the next time, these early finishes will become hard expectations.
A new approach to project management, the critical chain project management methodology, offers a solution to manage uncertainties in a single project environment, where resources are dedicated to individual projects. A key component to this approach suggests putting blocks of unscheduled time, called buffers, at key integration points in project plans to absorb the shocks of uncertainties. Another key component of the critical chain project management methodology suggests that buffers are managed during execution to ensure the project meets established time goals. A description of the critical chain-based project management method was first published in Critical Chain, by Eliyahu M. Goldratt, North River Press 1997.
This new project management approach, however, has been very difficult to implement in multi-project environments. This is because resources in a multi-project environment are not just dedicated to one project, but instead are shared across multiple projects. In a multi-project environment, buffer management based on a single project fails to work. In this environment, task priorities are needed not just within one project, but among multiple projects. Furthermore, most multi-project teams are located in multiple locations and are managed by individual project managers. These disparate teams, however, draw upon a common pool of resources on a timely basis. For this reason, implementing the critical chain project management methodology in a multi-project environment requires multi-project buffer management. Specifically, multi-project buffer management is needed in order to provide task priorities across multiple projects. Current project management software lacks multi-project buffer management and task priorities across multiple projects, hampering an organization's ability to deliver multiple projects on time and within budget.
One common problem with existing project management software based on critical chain is the lack of task prioritization across projects. Task prioritization refers to the calculation of priority for each task. Task priorities are important during execution since task managers must be able to identify, at any given time, those tasks that are most critical to the timely completion of the project. Existing project management packages based on critical chain calculate task priority within a project using a simple formula that merely reports the status of buffers, and leaves it up to the project manager to figure out what to do as a result. This is inadequate in large multi-project environments since true task priorities should include priorities across multiple projects, and should be based on multiple factors such as relative project priority, relative buffer priority, buffer consumption rates and other factors. Without the calculation of task priorities across multiple projects, managers are unable to see the Big Picture and hence properly prioritize people and resources to the correct tasks. The calculation of a task priority for a single project shows only a partial priority of a particular task.
Yet another common problem with existing project management software based on critical chain is buffer management. Currently, buffer management is executed by an administrator sitting at a workstation that is part of a network implementing the project management software. The administrator is unable to be mobile while still performing the duties of buffer management. This is inadequate and restricts the actions of the administrator.
Yet another common problem with existing project management software based on critical chain is the difficulty in implementation for large projects that have a lot of many tasks. For long or complex projects, the task network created can be extremely large and intricate. In such a complex task network, the modification of one task may require the modification of multiple other tasks that may depend on the modified task, or which the modified task depends from. This requires additional time and effort by administrators to propagate all changes to one task to all other tasks that are related to the modified task. This renders the network unwieldy and difficult to manage. Further, due to inherent uncertainties and a very detailed task network, tasks and dependencies change constantly, resulting in extremely unstable priorities. Also, in a multi-project environment, it is very difficult to limit work-in-progress with a very detailed task network, resulting in multi-tasking and stretching of projects.
Therefore a need exists to overcome the problems discussed above, and particularly for a way to facilitate critical chain-based project management to more efficiently deal with complex and multiple projects.